const Koa = require('koa');

const app = new Koa();

// app.use(async (ctx,next) => {
//     console.log(ctx.request.url);     //请求路径
//     console.log(ctx.request.method);  //请求方式

//     console.log(ctx.request.path);    //请求路径
//     console.log(ctx.request.header);  //请求头
//     ctx.body = '123'    //响应体  ctx.response.body  ctx.body
// })

//需求：每次请求花费的时间  =   结束时间 - 开始时间 
app.use(async (ctx,next) => {
    let startTime = new Date().getTime(); //时间戳
    console.log("第一个中间件开始");
    await next(); //等待执行下一个中间件
    console.log("第一个中间件结束");
    let endTime = new Date().getTime(); //时间戳
    let time = endTime - startTime;
    ctx.body = time;
})

app.use(async (ctx,next) => {
    console.log("第二个中间件开始");
    await next(); //等待执行下一个中间件
    console.log("第二个中间件结束");
})

//ajax  setTimeout

function delay(){
    return new Promise((resolve,reject) => {
        setTimeout(() => {
            resolve();   
        },1000)
    })
}

//async await 
app.use(async (ctx,next) => {
    console.log("第三个中间件开始")
    await delay();  //等待延迟执行完毕
    await next(); //等待执行下一个中间件
    console.log("第三个中间件结束");
})

app.use(async (ctx,next) => {
    console.log("第四个中间件开始")
})

app.listen(3000,() => {
    console.log("服务器启动成功")
})